import router from '@/router'
import useUserStore from '@/store/modules/user'
import pinia from './store'
import { LogoOrTitle } from './setting'
// 引入进度条
import nprogress from 'nprogress'
// 引入进度条样式
import 'nprogress/nprogress.css'
nprogress.configure({ showSpinner: false })
let userStore = useUserStore(pinia)
router.beforeEach(async (to, from, next) => {
  // console.log(userStore.token);
  // 设置网页标题为网站名字拼接菜单名字
  document.title = `${LogoOrTitle.title} - ${to.meta.title}`
  nprogress.start()
  if (userStore.token) {
    // 有token说明登录成功,
    // 成功要做的事情:第一访问不能访问login,要反问的话就要重定向到首页/home
    if (to.path == '/login') {
      next({ path: '/' })
    } else {
      //登录成功后访问其它页面,可以访问(登录排除)
      // 判断用户是否已经获取用户信息
      if (userStore.username) {
        next()
      } else {
        // console.log(await userStore.getUserInfo());
        // 没有获取用户信息,需要先获取用户信息,发请求
        try {
          await userStore.getUserInfo()
          // 万一路由没有加载完毕，就访问了别的页面，导致路由重复加载，所以需要判断一下，如果路由已经加载完毕，就不再重复加载了
          next({ ...to })
          // console.log("我统一请求用户信息接口拿数据");
        } catch (error) {
          // token过期或者是用户手动修改token
          // 所以要退出登录->用户相关数据清空
          userStore.handleLogOut()
          userStore.token = null
          next({ path: '/login', query: { redirect: to.path } })
        }
      }
    }
  } else {
    // 用户没有登录,两种情况:第一就是输入login放行,第二就是其他页面跳转login,需要先登录
    if (to.path == '/login') {
      next()
    } else {
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})
router.afterEach((to, from) => {
  nprogress.done()
})
